<?php

namespace App\Http\Controllers\Test;


use App\Http\Controllers\Controller;
use App\Logics\TagCacheLogic;
use App\Models\Article;
use App\Service\BangCache;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;

class ModelCacheController extends Controller
{


    // 模型缓存

    //  查询详情
    //    实现成功：不论有没有数据都生成缓存，删除绑定后，重新查询
    // http://www.shop.com/test/model-cache/find
    public function find()
    {
        DB::connection()->enableQueryLog();


        $id = 100;
        $id = 1;

        $where = ['id' => $id];
        $map   = ['id' => $id];
        // 验证：绑定字段
        $model = new Article();
        /*$isBang = $model->bangData($map);
        if($isBang === false){
            $this->showMsg('第一次获取缓存的数据', $model->getError());
            die;
        }*/

        // 第一次查询：详情
        $info = $model->oneFindCache($map, $where);
        $this->showMsg('第一次获取缓存的数据', $info);
        $this->showMsg('第一次获取查询语句', DB::getQueryLog());


        // 第二次查询：详情
        //$isBang = $model->bangData($map);
        $info = $model->oneFindCahce($map, $where);
        $this->showMsg('第二次获取缓存的数据', $info);
        $this->showMsg('第二次获取查询语句', DB::getQueryLog());


        // 修改：删除缓存
        $model->deleteCacheShow($info);   // where条件制作绑定

        // 第三次查询：详情
        //$isBang = $model->bangData($map);
        $info = $model->oneFindCahce($map, $where);
        $this->showMsg('第三次获取缓存的数据', $info);
        $this->showMsg('第三次获取查询语句', DB::getQueryLog());

    }


    //  查询列表
    //    实现成功：不论有没有数据都生成缓存，删除绑定后，重新查询
    // http://www.shop.com/test/model-cache/list
    public function list()
    {
        DB::connection()->enableQueryLog();


        $site_id = 1;
        $site_id = 2;
        $where   = ['site_id' => $site_id];
        $map     = ['site_id' => $site_id];


        // 验证：绑定字段
        $model  = new Article();
        $isBang = $model->bangData($map);
        if($isBang === false){
            $this->showMsg('第一次获取缓存的数据', $model->getError());
            die;
        }

        // 第一次查询：详情
        $list = $model->getList($where);
        //$this->showMsg('第一次获取缓存的数据', $list);
        $this->showMsg('第一次获取查询语句', DB::getQueryLog());

        // 第二次查询：详情
        $isBang = $model->bangData($map);
        $list   = $model->getList($where);
        //$this->showMsg('第二次获取缓存的数据', $list);
        $this->showMsg('第二次获取查询语句', DB::getQueryLog());


        // 修改：删除缓存
        $model->deleteCacheList($list);   // where条件制作绑定

        // 第三次查询：详情
        //$isBang = $model->bangData($map);
        $list = $model->getListCache($map, $where);
        //$this->showMsg('第三次获取缓存的数据', $list);
        $this->showMsg('第三次获取查询语句', DB::getQueryLog());


    }

    ############################################################################################

    // 输出
    protected function showMsg($msg, $var)
    {
        echo '<h5>'.$msg.'：</h5>';
        if($var){
            if(is_string($var)){
                echo $var;
            } else{
                var_dump($var);
            }

            echo '<br><br>';
        }
    }

}


